home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / librw / RWTPtrHashMultiMap.z / RWTPtrHashMultiMap
Encoding:
Text File  |  2002-10-03  |  24.1 KB  |  595 lines

  1.  
  2.  
  3.  
  4. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  5.  
  6.  
  7.  
  8. NNNNaaaammmmeeee
  9.      RWTPtrHashMultiMap<K,T,H,EQ> - Rogue Wave library class
  10.  
  11. SSSSyyyynnnnooooppppssssiiiissss
  12.               #include <rw/tphmmap.h>
  13.           RWTPtrHashMultiMap<K,T,H,EQ> m;
  14.  
  15.  
  16.  
  17. SSSSttttaaaannnnddddaaaarrrrdddd CCCC++++++++ LLLLiiiibbbbrrrraaaarrrryyyy DDDDeeeeppppeeeennnnddddeeeennnntttt!!!!
  18.  
  19.  
  20.  
  21.      RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp requires the Standard C++ Library.
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
  29.      This class maintains a pointer-based collection of associatoins of type
  30.      ppppaaaaiiiirrrr<<<<KKKK**** ccccoooonnnnsssstttt,,,, TTTT****>>>>.  These pairs are stored according to a hash object of
  31.      type HHHH.  HHHH must provide a hash function on elements of type KKKK via a
  32.      public member
  33.  
  34.                  unsigned long operator()(const K& x)
  35.  
  36.  
  37.  
  38.  
  39.  
  40.      Equivalent keys within the collection will be grouped together based on
  41.      an equality object of type EEEEQQQQ.  EEEEQQQQ must ensure this grouping via public
  42.      member
  43.  
  44.                  bool operator()(const K& x, const K& y)
  45.  
  46.  
  47.  
  48.  
  49.  
  50.      which should return ttttrrrruuuueeee if xxxx and yyyy are equivalent.
  51.      RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> may contain multiple keys that compare equal
  52.      to each other.  (RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> will not accept a key that
  53.      compares equal to any key already in the collection.)  Equality is based
  54.      on the comparison object and not on the ======== operator.
  55.  
  56. PPPPeeeerrrrssssiiiisssstttteeeennnncccceeee
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  71.  
  72.  
  73.  
  74.      Isomorphic
  75.  
  76. EEEExxxxaaaammmmpppplllleeeessss
  77.               //
  78.  
  79.  
  80.  
  81.               // tphmap.cpp
  82.           //
  83.           #include<rw/tphmmap.h>
  84.           #include<rw/cstring.h>
  85.           #include<iostream.h>
  86.           struct silly_hash{
  87.              unsigned long operator()(RWCString x) const
  88.              { return x.length() * (long)x[0]; }
  89.           };
  90.           int main(){
  91.             RWCString snd = "Second";
  92.             RWTPtrHashMultiMap<RWCString,int,silly_hash,equal_to<RWCString> >
  93.                 contest;
  94.             contest.insert(new RWCString("First"), new int(7));
  95.             contest.insert(&snd, new int(3));
  96.             contest.insert(&snd, new int(6));      // duplicate key OK
  97.             contest.insert(new RWCString("Third"), new int(2));
  98.             cout << "There were " << contest.occurrencesOf(&snd)
  99.                  << " second place winners." << endl;
  100.             return 0;
  101.           }
  102.            Program Output:
  103.           There were 2 second place winners.
  104.  
  105. RRRReeeellllaaaatttteeeedddd CCCCllllaaaasssssssseeeessss
  106.      Class RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> offers the same interface to a pointer-
  107.      based collection that will not accept multiple keys that compare equal to
  108.      each other.
  109.      rrrrwwww____hhhhaaaasssshhhhmmmmuuuullllttttiiiimmmmaaaapppp<<<<<<<<KKKK****,,,,TTTT****>>>>,rrrrwwww____ddddeeeerrrreeeeffff____hhhhaaaasssshhhh<<<<HHHH,,,,KKKK>>>>,,,,rrrrwwww____ddddeeeerrrreeeeffff____ccccoooommmmppppaaaarrrreeee<<<<EEEEQQQQ,,,,KKKK>>>> >>>> is
  110.      the C++-standard style collection that serves as the underlying
  111.      implementation for this collection.
  112.  
  113. PPPPuuuubbbblllliiiicccc TTTTyyyyppppeeeeddddeeeeffffssss
  114.               typedef rw_deref_hash<H,K>                container_hash;
  115.           typedef rw_deref_compare<EQ,K>            container_eq;
  116.           typedef rw_hashmultimap<K*,T*,container_hash,container_eq>
  117.                                                     container_type;
  118.           typedef container_type::size_type         size_type;
  119.           typedef container_type::difference_type   difference_type;
  120.           typedef container_type::iterator          iterator;
  121.           typedef container_type::const_iterator    const_iterator;
  122.           typedef pair <K* const, T*>               value_type;
  123.           typedef pair <K* const, T*>&              reference;
  124.           typedef const pair <K* const, T*>&        const_reference;
  125.           typedef K*                                value_type_key;
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  137.  
  138.  
  139.  
  140.           typedef T*                                value_type_data;
  141.           typedef K*&                               reference_key;
  142.           typedef T*&                               reference_data;
  143.           typedef const K*const&                    const_reference_key;
  144.           typedef const T*const&                    const_reference_data;
  145.  
  146.  
  147.  
  148. PPPPuuuubbbblllliiiicccc CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  149.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>();
  150.  
  151.  
  152.      Constructs an empty map.
  153.  
  154.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>(const container_type& m);
  155.  
  156.  
  157.      Constructs a multi-map by doing an element by element copy from the C++
  158.      Standard Library style hashed multi-map, mmmm.
  159.  
  160.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  161.           (const RWTPtrHashMultiMap<K,T,H,EQ>& rwm);
  162.  
  163.  
  164.      Copy constructor.
  165.  
  166.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  167.           (value_type* first, value_type* last);
  168.  
  169.  
  170.      Constructs a map by copying elements from the array of ppppaaaaiiiirrrrs pointed to
  171.      by ffffiiiirrrrsssstttt, up to, but not including, the pair pointed to by llllaaaasssstttt.
  172.  
  173.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  174.           (const H& h, size_type sz = RWDEFAULT_CAPACITY);
  175.  
  176.  
  177.      This TTTToooooooollllssss....hhhh++++++++ 6.x style constructor creates an empty hashed multi-map
  178.      which uses the hash object hhhh and has an initial capacity of sssszzzz.
  179.  
  180. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr OOOOppppeeeerrrraaaattttoooorrrrssss
  181.               RWTPtrHashMultiMap<K,T,H,EQ>&
  182.           ooooppppeeeerrrraaaattttoooorrrr====(const container_type&jjj m);
  183.           RWTPtrHashMultiMap<K,T,H,EQ>&
  184.           ooooppppeeeerrrraaaattttoooorrrr====(const RWTPtrHashMultiMap<K,T,H,EQ>& m);
  185.  
  186.  
  187.      Destroys all associations in self and replaces them by copying all
  188.      associations from mmmm.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  203.  
  204.  
  205.  
  206.               bool
  207.           ooooppppeeeerrrraaaattttoooorrrr========(const RWTPtrHashMultiMap<K,T,H,EQ>& m);
  208.  
  209.  
  210.      Returns ttttrrrruuuueeee if self compares equal to mmmm, otherwise returns ffffaaaallllsssseeee.  Two
  211.      collections are equal if both have the same number of entries, and
  212.      iterating through both collections produces, in turn, individual keys
  213.      that compare equal to each other.  Keys are dereferenced before being
  214.      compared.
  215.  
  216. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr FFFFuuuunnnnccccttttiiiioooonnnnssss
  217.               void
  218.           aaaappppppppllllyyyy(void (*fn)(const K*, T*&,void*),void* d);
  219.           void
  220.           aaaappppppppllllyyyy(void (*fn)(const K*, const T*, void*), void* d) const;
  221.  
  222.  
  223.      Applies the user-defined function pointed to by ffffnnnn to every association
  224.      in the collection.  self function must have one of the prototypes:
  225.  
  226.               void yourfun(const K* key, T*& a, void* d);
  227.  
  228.  
  229.  
  230.               void yourfun(const K* key, const T* a, void* d);
  231.  
  232.  
  233.      Client data may be passed through parameter dddd.
  234.  
  235.               void
  236.           aaaappppppppllllyyyyTTTTooooKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(void (*fn)(const K*, T*&,void*),void* d);
  237.           void
  238.           aaaappppppppllllyyyyTTTTooooKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee
  239.           (void (*fn)(const K*, const T*, void*), void* d) const;
  240.  
  241.  
  242.      This is a deprecated version of the aaaappppppppllllyyyy member above.  It behaves
  243.      exactly the same as aaaappppppppllllyyyy.
  244.  
  245.               iterator
  246.           bbbbeeeeggggiiiinnnn();
  247.           const_iterator
  248.           bbbbeeeeggggiiiinnnn() const;
  249.  
  250.  
  251.      Returns an iterator positioned at the first pair in self.
  252.  
  253.               size_type
  254.           ccccaaaappppaaaacccciiiittttyyyy() const;
  255.  
  256.  
  257.      Returns the number of buckets (slots) available in the underlying hash
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  269.  
  270.  
  271.  
  272.      representation.  See rrrreeeessssiiiizzzzeeee below.
  273.  
  274.               void
  275.           cccclllleeeeaaaarrrr();
  276.  
  277.  
  278.      Clears the collection by removing all items from self.
  279.  
  280.               void
  281.           cccclllleeeeaaaarrrrAAAAnnnnddddDDDDeeeessssttttrrrrooooyyyy();
  282.  
  283.  
  284.      Removes all associations from the collection and uses ooooppppeeeerrrraaaattttoooorrrr ddddeeeelllleeeetttteeee to
  285.      destroy the objects pointed to by the keys and their associated items.
  286.      Do not use self method if multiple pointers to the same keys or items are
  287.      stored.
  288.  
  289.               bool
  290.           ccccoooonnnnttttaaaaiiiinnnnssss(const K* key) const;
  291.  
  292.  
  293.      Returns ttttrrrruuuueeee if there exists a key jjjj in self that compares equal to ****kkkkeeeeyyyy,
  294.      otherwise returns ffffaaaallllsssseeee.
  295.  
  296.               bool
  297.           ccccoooonnnnttttaaaaiiiinnnnssss(bool (*fn)(value_type,void*),void* d) const;
  298.  
  299.  
  300.      Returns ttttrrrruuuueeee if there exists an association a in self such that the
  301.      expression ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee, otherwise returns ffffaaaallllsssseeee.  ffffnnnn points to a
  302.      user-defined tester function which must have prototype:
  303.  
  304.                  bool yourTester(value_type* a, void* d);
  305.  
  306.  
  307.  
  308.  
  309.  
  310.      Client data may be passed through parameter dddd.
  311.  
  312.               iterator
  313.           eeeennnndddd();
  314.           const_iterator
  315.           eeeennnndddd() const;
  316.  
  317.  
  318.      Returns an iterator positioned "just past" the last association in self.
  319.  
  320.               size_type
  321.           eeeennnnttttrrrriiiieeeessss() const;
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  335.  
  336.  
  337.  
  338.      Returns the number of associations in self.
  339.  
  340.               float
  341.           ffffiiiillllllllRRRRaaaattttiiiioooo() const;
  342.  
  343.  
  344.      Returns the ratio eeeennnnttttrrrriiiieeeessss(((())))/ccccaaaappppaaaacccciiiittttyyyy(((()))).
  345.  
  346.               const K*
  347.           ffffiiiinnnndddd(const K* key) const;
  348.  
  349.  
  350.      If there exists a key jjjj in self that compares equal to ****kkkkeeeeyyyy,  then jjjj is
  351.      returned.  Otherwise, returns rrrrwwwwnnnniiiillll.
  352.  
  353.               value_type
  354.           ffffiiiinnnndddd(bool (*fn)(value_type,void*), void* d) const;
  355.  
  356.  
  357.      If there exists an association aaaa in self such that the expression
  358.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee, then returns aaaa.  Otherwise, returns
  359.      ppppaaaaiiiirrrr<<<<rrrrwwwwnnnniiiillll,,,,rrrrwwwwnnnniiiillll>>>>. ffffnnnn points to a user-defined tester function which must
  360.      have prototype:
  361.  
  362.                  bool yourTester(value_type a, void* d);
  363.  
  364.  
  365.  
  366.  
  367.  
  368.      Client data may be passed through parameter dddd.
  369.  
  370.               T*
  371.           ffffiiiinnnnddddVVVVaaaalllluuuueeee(const K* key);
  372.           const T*
  373.           ffffiiiinnnnddddVVVVaaaalllluuuueeee(const K* key) const;
  374.  
  375.  
  376.      If there exists a key jjjj in self that compares equal to ****kkkkeeeeyyyy, returns the
  377.      item associated with jjjj.  Otherwise, returns rrrrwwwwnnnniiiillll.
  378.  
  379.               const K*
  380.           ffffiiiinnnnddddKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(const K* key, T*& tr);
  381.           const K*
  382.           ffffiiiinnnnddddKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(const K* key, const T*& tr) const;
  383.  
  384.  
  385.      If there exists a key jjjj in self that compares equal to ****kkkkeeeeyyyy, assigns the
  386.      item associated with jjjj to trrrr,,,, and returns jjjj.  Otherwise, returns rrrrwwwwnnnniiiillll
  387.      and leaves the value of ttttrrrr unchanged.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  401.  
  402.  
  403.  
  404.               bool
  405.           iiiinnnnsssseeeerrrrtttt(K* key,T* a);
  406.  
  407.  
  408.      Adds kkkkeeeeyyyy with associated item aaaa to the collection.  Returns ttttrrrruuuueeee.
  409.  
  410.               bool
  411.           iiiinnnnsssseeeerrrrttttKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(K* key,T* a);
  412.  
  413.  
  414.      This is a deprecated version of the iiiinnnnsssseeeerrrrtttt member above.  It behaves
  415.      exactly the same as iiiinnnnsssseeeerrrrtttt.
  416.  
  417.               bool
  418.           iiiissssEEEEmmmmppppttttyyyy() const;
  419.  
  420.  
  421.      Returns ttttrrrruuuueeee if there are no items in the collection, ffffaaaallllsssseeee otherwise.
  422.  
  423.               size_type
  424.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff(const K* key) const;
  425.  
  426.  
  427.      Returns the number of keys jjjj in self that compare equal to ****kkkkeeeeyyyy.
  428.  
  429.               size_type
  430.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff
  431.           (bool(*fn)(value_type,void*),void* d)const;
  432.  
  433.  
  434.      Returns the number of associations aaaa in self such that the
  435.      expression((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee.  ffffnnnn points to a user-defined tester
  436.      function which must have prototype:
  437.  
  438.                  bool yourTester(value_type a, void* d);
  439.  
  440.  
  441.  
  442.  
  443.  
  444.      Client data may be passed through parameter dddd.
  445.  
  446.               K*
  447.           rrrreeeemmmmoooovvvveeee(const K* key);
  448.  
  449.  
  450.      Removes the first association with key jjjj in self that compares equal to
  451.      ****kkkkeeeeyyyy.  Returns rrrrwwwwnnnniiiillll if there is no such association.
  452.  
  453.               K*
  454.           rrrreeeemmmmoooovvvveeee(bool (*fn)(value_type,void*), void* d);
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  467.  
  468.  
  469.  
  470.      Removes the first association aaaa in self such that the expression
  471.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee and returns its key.  Returns rrrrwwwwnnnniiiillll if there is no
  472.      such association.  ffffnnnn points to a user-defined tester function which must
  473.      have prototype:
  474.  
  475.               bool yourTester(value_type a, void* d);
  476.  
  477.  
  478.  
  479.  
  480.  
  481.      Client data may be passed through parameter dddd.
  482.  
  483.               size_type
  484.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(const K* key);
  485.  
  486.  
  487.      Removes all associations with key jjjj in self that compare equal to ****kkkkeeeeyyyy.
  488.      Returns the number of associations removed.
  489.  
  490.               size_type
  491.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(bool (*fn)(value_type,void*), void* d);
  492.  
  493.  
  494.      Removes all associations aaaa in self such that the expression
  495.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd))))))))is ttttrrrruuuueeee.  Returns the number removed.  ffffnnnn points to a user-
  496.      defined tester function which must have prototype:
  497.  
  498.                  bool yourTester(value_type a, void* d);
  499.  
  500.  
  501.  
  502.  
  503.  
  504.      Client data may be passed through parameter dddd.
  505.  
  506.               void
  507.           rrrreeeessssiiiizzzzeeee(size_type sz);
  508.  
  509.  
  510.      Changes the capacity of self by creating a new hashed multi-map with a
  511.      capacity of  sssszzzz .  rrrreeeessssiiiizzzzeeee then copies every element of sssseeeellllffff into the new
  512.      container and finally swaps the internal representation of the new
  513.      container with sssseeeellllffff.
  514.  
  515.               container_type&
  516.           ssssttttdddd();
  517.           const container_type&
  518.           ssssttttdddd() const;
  519.  
  520.  
  521.      Returns a reference to the underlying C++-standard collection that serves
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  533.  
  534.  
  535.  
  536.      as the implementation for self.
  537.  
  538. RRRReeeellllaaaatttteeeedddd GGGGlllloooobbbbaaaallll OOOOppppeeeerrrraaaattttoooorrrrssss
  539.               RWvostream&
  540.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWvostream& strm,
  541.                   const RWTPtrHashMultiMap<K,T,H,EQ>& coll);
  542.           RWFile&
  543.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWFile& strm,
  544.                   const RWTPtrHashMultiMap<K,T,H,EQ>& coll);
  545.  
  546.  
  547.      Saves the collection ccccoooollllllll onto the output stream ssssttttrrrrmmmm, or a reference to
  548.      it if it has already been saved.
  549.  
  550.               RWvistream&
  551.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm,
  552.                   RWTPtrHashMultiMap<K,T,H,EQ>& coll);
  553.           RWFile&
  554.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm,
  555.                   RWTPtrHashMultiMap<K,T,H,EQ>& coll);
  556.  
  557.  
  558.      Restores the contents of the collection ccccoooollllllll from the input stream ssssttttrrrrmmmm.
  559.  
  560.               RWvistream&
  561.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm,
  562.                   RWTPtrHashMultiMap<K,T,H,EQ>*& p);
  563.           RWFile&
  564.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm,
  565.                   RWTPtrHashMultiMap<K,T,H,EQ>*& p);
  566.  
  567.  
  568.      Looks at the next object on the input stream ssssttttrrrrmmmm and either creates a
  569.      new collection off the heap and sets pppp to point to it, or sets pppp to point
  570.      to a previously read instance.  If a collection is created off the heap,
  571.      then you are responsible for deleting it.
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.